磁盘基本操作
本文记录了关于磁盘操作的一些基本概念以及它们的逻辑关系,基本使用,更详细的内容见鸟哥的Linux私房菜 7.3
查看分区相关的信息
parted
磁盘的分区表类型查看
shell
[root@localhost ~]# parted /dev/sda print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system 标志
1 1049kB 1075MB 1074MB primary xfs 启动
2 1075MB 34.4GB 33.3GB primary lvm
[root@localhost ~]# parted /dev/sdb print
错误: /dev/sdb: unrecognised disk label
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
lsblk
查看系统上所有的磁盘,包括挂载和未挂载的
shell
[root@localhost ~]# lsblk -fp
NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/sda
├─/dev/sda1 xfs 05acea84-6335-414f-adff-166c8639ea79 /boot
└─/dev/sda2 LVM2_member vFliKb-RdOe-uUnZ-3Cx1-O8lV-tbpc-yCOXPj
├─/dev/mapper/centos-root xfs 0cfd0e8c-2967-4cc3-abef-c1025336945b /
└─/dev/mapper/centos-swap swap 55a1c2c9-79f2-4b92-a039-702d9c7f466f [SWAP]
/dev/sdb
/dev/sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 /run/media/zhangxinming/CentOS 7 x86_64
# -f选项可以看到文件系统和UUID,-p选项可以看到完整的分区名,而不是不是最后的名称. 另外,lsblk后边也可以加具体的磁盘设备,表示仅仅查看该磁盘设备的信息
[root@localhost ~]# lsblk -fp /dev/sda
NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/sda
├─/dev/sda1 xfs 05acea84-6335-414f-adff-166c8639ea79 /boot
└─/dev/sda2 LVM2_member vFliKb-RdOe-uUnZ-3Cx1-O8lV-tbpc-yCOXPj
├─/dev/mapper/centos-root xfs 0cfd0e8c-2967-4cc3-abef-c1025336945b /
└─/dev/mapper/centos-swap swap 55a1c2c9-79f2-4b92-a039-702d9c7f466f [SWAP]
查看分区的UUID的另一个命令blkid
上边已经说过 lsblk命令加上-f
选项,可以看到分区的UUID,blkid
命令可以直接查看分区的UUID
shell
[root@localhost ~]# blkid
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="05acea84-6335-414f-adff-166c8639ea79" TYPE="xfs"
/dev/sda2: UUID="vFliKb-RdOe-uUnZ-3Cx1-O8lV-tbpc-yCOXPj" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="0cfd0e8c-2967-4cc3-abef-c1025336945b" TYPE="xfs"
/dev/mapper/centos-swap: UUID="55a1c2c9-79f2-4b92-a039-702d9c7f466f" TYPE="swap"
分区操作
gdisk
命令可以创建删除分区
bash
gdisk /dev/sda
查看内核中激活的分区表
gdisk新建的分区可能没能及时在内核中加载,下面的命令查看内核中激活的分区表
shell
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
11 0 4601856 sr0
8 0 33554432 sda
8 1 1048576 sda1
8 2 32504832 sda2
8 16 2097152 sdb
8 17 20480 sdb1
8 18 102400 sdb2
253 0 29143040 dm-0
253 1 3354624 dm-1
热更新分区表命令:partprobe
shell
[root@study ~]# partprobe -s # 不过还是建议加上 -s 比较清晰!
/dev/vda: gpt partitions 1 2 3 4 5 6
再次使用lsblk查看实际的分区表
shell
[root@study ~]# lsblk /dev/sda
[root@study ~]# cat /proc/partitions # 核心的分区纪录
格式化分区操作,建立文件系统
gdisk只是完成了分区,但是每个分区有不同的格式,还需要进一步执行格式化操作才能正常使用这个分区
shell
[root@study ~]# mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] \ [-r parms] 装置名称
[root@study ~]# mkfs.xfs /dev/vda4
[root@study ~]# blkid /dev/vda4
/dev/vda4: UUID="39293f4f-627b-4dfd-a015-08340537709c" TYPE="xfs" # 确定建置好 xfs 文件系统了!
文件系统挂载与卸除
shell
[root@study ~]# mount -a
[root@study ~]# mount [-l]
[root@study ~]# mount [-t 文件系统] LABEL='' 挂载点
[root@study ~]# mount [-t 文件系统] UUID='' 挂载点 # 鸟哥近期建议用这种方式喔! [root@study ~]# mount [-t 文件系统] 装置文件名 挂载点
挂载 xfs/ext4/vfat 等文件系统
shell
[root@study ~]# mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs
挂载 CD 或 DVD 光盘
shell
[root@study ~]# mount /dev/sr0 /data/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
挂载 vfat 中文随身碟 (USB 磁盘)
shell
范例:找出你的随身碟装置的 UUID,并挂载到 /data/usb 目录中
[root@study ~]# blkid
/dev/sda1: UUID="35BC-6D6B" TYPE="vfat"
[root@study ~]# mkdir /data/usb
[root@study ~]# mount -o codepage=950,iocharset=utf8 UUID="35BC-6D6B" /data/usb [root@study ~]# # mount -o codepage=950,iocharset=big5 UUID="35BC-6D6B" /data/usb [root@study ~]# df /data/usb
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 2092344 4 2092340 1% /data/usb
LVM总览
逻辑滚动条管理员 (Logical Volume Manager),更详细的内容见鸟哥的Linux私房菜 14.3
PV操作
pvcrete 创建一个PV分区
bash
pvcreate /dev/sdb1 /dev/sdb2
pvdisplay或pvs 查看PV
shell
root@simon-Precision-Tower-7810:/home/simon# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 system lvm2 a-- 464.56g <316.94g
/dev/sdb1 data lvm2 a-- <1.82t 0
root@simon-Precision-Tower-7810:/home/simon# pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name data
PV Size <1.82 TiB / not usable <3.09 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 476931
Free PE 0
Allocated PE 476931
PV UUID iIHs4m-9R3d-Kt70-Q57E-Tz0Q-oamc-9tm3eF
--- Physical volume ---
PV Name /dev/sda3
VG Name system
PV Size <464.57 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 118928
Free PE 81136
Allocated PE 37792
PV UUID 0Y7rMD-Pap7-O1ui-XCrl-1RnD-QD9V-2Rokup
VG操作
查看Volume Group
每个vg下面包含多个分区,形成了一个更大的分区
shell
root@simon-Precision-Tower-7810:/home/simon# vgs
VG #PV #LV #SN Attr VSize VFree
data 1 1 0 wz--n- <1.82t 0
system 1 3 0 wz--n- 464.56g <316.94g
# 这里每个vg仅包含一个分区()
root@simon-Precision-Tower-7810:/home/simon# vgdisplay
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <1.82 TiB
PE Size 4.00 MiB
Total PE 476931
Alloc PE / Size 476931 / <1.82 TiB
Free PE / Size 0 / 0
VG UUID E5FMKm-xreF-sTk9-23nD-lk1a-JIXJ-4sciEv
--- Volume group ---
VG Name system
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 464.56 GiB
PE Size 4.00 MiB
Total PE 118928
Alloc PE / Size 37792 / 147.62 GiB
Free PE / Size 81136 / <316.94 GiB
VG UUID q6xYvw-jHAz-UAuJ-Mwfe-9e0U-hVgv-q1V50h
创建一个VG
bash
vgcreate [卷组名] [物理卷名]
# vgcreate vg01 /dev/sdb /dev/sdc /dev/sdd
Volume group "vg01" successfully created
LV操作
4个lvcreate命令例子
- 在名为vg_newlvm的卷组中创建15G大小的逻辑卷:
bash
lvcreate -L 15G vg_newlvm
- 在名为vgnewlvm的卷组中创建大小为2500MB的逻辑卷,并命名为centos7newvol,这样就创建了块设备/dev/vgnewlvm/centos7newvol:
bash
lvcreate -L 2500 -n centos7_newvol vg_newlvm
- 可以使用lvcreate命令的参数-l来指定逻辑卷扩展的大小。也可以使用这个参数以卷组的大小百分比来扩展逻辑卷。这下列的命令创建了centos7newvol卷组的50%大小的逻辑卷vgnewlvm:
bash
lvcreate -l 50%VG -n centos7_newvol vg_newlvm
4.使用卷组剩下的所有空间创建逻辑卷
bash
lvcreate --name centos7newvol -l 100%FREE vgnewlvm